package com.ljm.boot.rabbitmq.config;

import com.ljm.boot.rabbitmq.constant.*;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


public class FanoutConfig {



    //--------fanout广播模式---------
    /**
     * 1. 配置队列
     * 2. 队列名为 queue
     * 3. true 表示: 持久化 (不填，默认为true,默认持久化)
     * durable： 队列是否持久化。 队列默认是存放到内存中的，rabbitmq 重启则丢失，
     * 若想重启之后还存在则队列要持久化，
     * 保存到 Erlang 自带的 Mnesia 数据库中，当 rabbitmq 重启之后会读取该数据库
     * @return
     */
    @Bean
    public Queue queue1(){
        return new Queue(RabbitMQConstant.FANOUT_QUEUE_1);
    }


    @Bean
    public Queue queue2(){
        return new Queue(RabbitMQConstant.FANOUT_QUEUE_2);
    }

    //创建交换机
    @Bean
    public FanoutExchange exchange(){
        return new FanoutExchange(RabbitMQConstant.FANOUT_EXCHANGE);
    }

    //将队列和交换机进行绑定
    @Bean
    public Binding binding01(){
        //将队列queue1和交换机进行绑定
        return BindingBuilder.bind(new Queue(RabbitMQConstant.FANOUT_QUEUE_1)).to(new FanoutExchange(RabbitMQConstant.FANOUT_EXCHANGE));
    }

    @Bean
    public Binding binding02(){
        //将队列queue1和交换机进行绑定
        return BindingBuilder.bind(new Queue(RabbitMQConstant.FANOUT_QUEUE_2)).to(new FanoutExchange(RabbitMQConstant.FANOUT_EXCHANGE));
    }
}
